home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / comm / ca29_3.zip / BBS.CMD < prev    next >
OS/2 REXX Batch file  |  1992-07-02  |  24KB  |  1,458 lines

  1. LEGE "Scripted BBS (1.2); initializing"
  2. WOPE 10,1 12,78 (default)
  3. ATSA 11,3 (default) "Initializing BBS.. "
  4. S20="_PARM"(11:14)*","*"_PARM"(0:3)
  5. S21="ATE0Q0V1X1S0=2 S7=30 S9=10^M"
  6. S22="\BBS"
  7. S23="\BBS\FILES"
  8. S24="\BBS\MAIL"
  9. S25="\BBS\BULLETIN"
  10. SET PARI NONE
  11. SET DATA 8
  12. SET STOP 1
  13. SET MASK ON
  14. SET CR_I CR_L
  15. SET ASCI UP_L LF
  16. SET SOFT ON
  17. SET ZMOD AUTO OFF
  18. SET ZMOD RECO OFF
  19. IF ISSC "BBSDAT"
  20. FCAL "BBSDAT"
  21. ELSE
  22. S10="_SCRIPT"
  23. GOSU Parse_Fn
  24. S10=S10*"\BBSDAT"
  25. IF ISSC S10 FCALL S10
  26. ENDI
  27. SUBD S29
  28. DLDI S28
  29. FFIR S22
  30. IF FAILURE or NOT ISFILE S22*"\BBS-User"
  31. WCLO
  32. GOTO NoUser
  33. ENDI
  34. SET BAUD S20(5:8)
  35. SET PORT S20(0:3)
  36. SET INAF OFF
  37. SET ALAR OFF
  38. SET ATIM 1
  39. CHDI S22
  40. SET DLDI S23
  41. LEGE "Scripted BBS (1.1);  Press ESC to terminate or to CHAT."
  42. TRAN "_MESCAPE"
  43. WCLO
  44. ON ESCA GOSU Escape
  45. S9="* BBS script loaded"
  46. CLOG S9
  47. GOSU Log_Item
  48. GOTO Restart
  49. Parse_Fn:
  50. LENG S10 N10
  51. FOR N11=(N10-1),0,-1
  52. IF STRCMP S10(N11:N11) ":" or STRCMP S10(N11:N11) "\" GOTO PAFN100
  53. ENDF
  54. S11=S10
  55. S10=""
  56. RETU
  57. PAFN100:
  58. S11=S10(N11+1:N10)
  59. IF STRCMP S10(N11:N11) "\" DEC N11
  60. S10=S10(0:N11)
  61. RETU
  62. NoUser:
  63. LEGE "Scripted BBS (1.1);  Error initializing"
  64. WOPE 10,10,17,70 (default) NoUser_E
  65. ATSA 10,12 (default) " BBS initialization "
  66. ATSA 11,12 (default) "There is no user ID file (BBS-User) to be found on the"
  67. ATSA 12,12 (default) "subdirectory: "*S22
  68. ATSA 14,12 (default) "The script BBSETUP must be used to identify the subdir-"
  69. ATSA 15,12 (default) "ectory used by this BBS, and to create and maintain the"
  70. ATSA 16,12 (default) "files it uses."
  71. ATSA 17,29 (default) " Press any key to continue "
  72. KEYG S0
  73. NoUser_E:
  74. WCLO
  75. EXIT
  76. Escape:
  77. CURS N98,N97
  78. WOPE 10,1 20,78 (default) ESC_ESC
  79. ATSA 10,3 (default) " BBS Operator menu "
  80. ATSA 12,3 (default) "1) Terminate the BBS"
  81. IF FLAG(3)
  82. ATSA 13,3 (default) "2) Enter chat with caller"
  83. ELSE
  84. ATSA 13,3 (default) ".. No caller currently on "
  85. ENDI
  86. ATSA 14,3 (default) "3) Cancel this window"
  87. ATSA 15,1 (default) "├────────────────────────────────────────────────────────────────────────────┤"
  88. IF ISSCRIPT "BBMAINT" and NOT FLAG(3)
  89. ATSA 16,3 (default) "4) Invoke BBS maintenance scripts"
  90. ELSE
  91. ATSA 16,3 (default) ".. Maintenance script not available"
  92. ENDI
  93. IF ISSCRIPT "BBSETUP" and NOT FLAG(3)
  94. ATSA 17,3 (default) "5) Invoke BBS setup script"
  95. ELSE
  96. ATSA 17,3 (default) ".. Setup script not available"
  97. ENDI
  98. ATSA 18,1 (default) "├────────────────────────────────────────────────────────────────────────────┤"
  99. ATSA 19,3 (default) "Select item: "
  100. ATSA 20,31 (default) " Press ESC to cancel "
  101. LOCA 19,16
  102. KEYG S0
  103. WCLO
  104. LOCA N98,N97
  105. SWIT S0
  106. CASE "1"
  107. GOTO End
  108. ENDC
  109. CASE "2"
  110. IF FLAG(3) GOTO Chat
  111. ENDC
  112. CASE "3"
  113. RETU
  114. ENDC
  115. CASE "4"
  116. GOSU EndBBS
  117. IF ISFILE "BBMaint" EXECUTE "BBMaint"
  118. ENDC
  119. CASE "5"
  120. GOSU EndBBS
  121. IF ISFILE "BBSetup" EXECUTE "BBSetup"
  122. ENDC
  123. DEFA
  124. SOUN 100,100
  125. ENDC
  126. ENDS
  127. GOTO Escape
  128. ESC_ESC:
  129. S0="3"
  130. RETU
  131. End:
  132. GOSU EndBBS
  133. EXIT
  134. EndBBS:
  135. SET TTHR OFF
  136. WOPE 10,1 12,78 (default)
  137. ATSA 11,3 (default) "Terminating BBS.. "
  138. HANG
  139. S9="* BBS script terminated"
  140. CLOG S9
  141. GOSU Log_Item
  142. SET DLDI S28
  143. CHDI S29
  144. RESE
  145. CLEA
  146. MESS "BBS terminated... type Alt-X to exit COM-AND^M^J^M^J"
  147. TRAN "_MINIT"
  148. DELE "\HOSTTEMP.TXT"
  149. WCLO
  150. RETU
  151. Chat:
  152. TRAN "^M^J"
  153. TRAN "^M^JOperator initiated chat mode..."
  154. S2="_LEGEND"
  155. LEGE "Scripted BBS (1.1);  Chat mode; null entry at prompt to exit"
  156. Chat_Loo:
  157. MESS "^M^JSYSOP: "
  158. GET S0 80
  159. IF NULL S0
  160. MESS "Continue? (Y/N, cr=y): "
  161. GET S0 2
  162. IF FIND S0 "N"
  163. TRAN "^M^JChat terminated by SYSOP"
  164. LEGE S2
  165. RETU
  166. ENDI
  167. S0=" "
  168. ENDI
  169. TRAN "^M^JSYSOP: "
  170. TRAN S0
  171. MESS "Caller: "
  172. TRAN "^M^JCaller: "
  173. GOSU Read_Com
  174. IF FLAG(0)
  175. MESS "^M^JCaller disconnected"
  176. LEGE S2
  177. RETU
  178. ENDI
  179. GOTO Chat_Loo
  180. Limit_Ti:
  181. IF FLAG(1)
  182. SET FLAG(0) OFF
  183. RETU
  184. ENDI
  185. TIME S9 1
  186. N19=S9(0:1)*60+S9(3:4)
  187. N18=S6(0:1)*60+S6(3:4)
  188. IF GT N18 N19
  189. N19=N19+1440
  190. ENDI
  191. N19=N19-N18
  192. IF GT N19 N0
  193. TRAN "^M^JYour alotted time has expired..."
  194. TRAN "^M^JYou are being disconnected."
  195. SET FLAG(0) ON
  196. RETU
  197. ENDI
  198. SET FLAG(0) OFF
  199. RETU
  200. Read_Com:
  201. IF FLAG(3)
  202. GOSU Limit_Ti
  203. IF FLAG(0) RETURN
  204. ENDI
  205. RGET S9 80 180
  206. IF NOT CONNECTED GOTO Disconnect
  207. IF FAILED GOTO Timeout
  208. FIND S9 "NO CARRIER"
  209. IF FOUND GOTO Disconnect
  210. SET FLAG(0) OFF
  211. RETU
  212. Timeout:
  213. TRAN "^M^J... autodisconnect due to timeout^M^J"
  214. MESS "^M^J... autodisconnect due to timeout"
  215. GOTO RComm_Ex
  216. Disconne:
  217. MESS "^M^JCaller disconnected"
  218. RComm_Ex:
  219. SET FLAG(0) ON
  220. RETU
  221. Display_:
  222. IF FLAG(1) RETURN
  223. TIME S9 1
  224. N19=S9(0:1)*60+S9(3:4)
  225. N18=S6(0:1)*60+S6(3:4)
  226. IF GT N18 N19
  227. N19=N19+1440
  228. ENDI
  229. N19=N0-(N19-N18)
  230. STRF S9 "^M^J(%d minutes remaining)" N19
  231. TRAN S9
  232. RETU
  233. Logon:
  234. FOPENI "BBS-User" TEXT
  235. IF FAILED
  236. SET FLAG(0) ON
  237. RETU
  238. ENDI
  239. Logon_Lo:
  240. READ S9 80 N19
  241. IF EOF
  242. FCLOSEI
  243. SET FLAG(0) ON
  244. RETU
  245. ENDI
  246. FIND S9(0:0) "<"
  247. IF FOUND GOTO Logon_Loop
  248. SWIT S1
  249. CASE S9(0:15)
  250. GOTO Logon_OK
  251. ENDC
  252. ENDS
  253. GOTO Logon_Lo
  254. Logon_OK:
  255. SET FLAG(1) OFF
  256. SET FLAG(3) ON
  257. N0=60
  258. FIND S9(16:16) "P"
  259. IF FOUND
  260. SET FLAG(1) ON
  261. N0=3000
  262. ENDI
  263. TIME S6 1
  264. FCLOSEI
  265. SET FLAG(0) OFF
  266. RETU
  267. Disp_Fil:
  268. IF ISFILE S8
  269. TRAN "^M^J"
  270. SEND ASCII S8
  271. RETU
  272. ENDI
  273. IF ISFILE S22&"\"*S8
  274. TRAN "^M^J"
  275. SEND ASCII S22&"\"*S8
  276. RETU
  277. ENDI
  278. TRAN S9
  279. RETU
  280. Log_Item:
  281. FOPENO S22&"\BBS-LOG" TEXT APPEND
  282. IF FAILED RETURN
  283. DATE S7
  284. CONC S9(59) S7
  285. TIME S7 1
  286. CONC S9(70) S7
  287. WRIT S9
  288. WRIT "^M"
  289. FCLOSEO
  290. RETU
  291. Copy_Tex:
  292. N20=0
  293. Copy_Loo:
  294. INC N20
  295. S9=N20&":  ^H"
  296. TRAN S9
  297. GOSU Read_Com
  298. IF FLAG(0) RETURN
  299. LENG S9 N18
  300. IF NOT ZERO N18
  301. PRES S9
  302. WRIT S9
  303. IF FAILED
  304. TRAN "Error recording text - please try later^M^J"
  305. RETU
  306. ENDI
  307. WRIT "!"
  308. GOTO Copy_Loo
  309. ELSE
  310. TRAN "^M^JComplete? (Y/N, cr=n): "
  311. GOSU Read_Com
  312. IF FLAG(0) RETURN
  313. IF NOT FIND S9 "Y"
  314. WRIT "!"
  315. GOTO Copy_Loo
  316. ENDI
  317. ENDI
  318. RETU
  319. Restart:
  320. CHDI S22
  321. SET RECH OFF
  322. SET RDIS OFF
  323. CLEA
  324. LOCA 0,0
  325. SET FLAG(1) OFF
  326. SET FLAG(2) OFF
  327. SET FLAG(3) OFF
  328. HANG
  329. MESS "^M^JWaiting..."
  330. PAUS 3
  331. SET BAUD S20(5:8)
  332. TRAN S21
  333. Wait_Con:
  334. RGET S9 80 180
  335. IF FAILED GOTO Wait_Connect
  336. FIND S9 "NO CARRIER"
  337. IF FOUND GOTO Restart
  338. FIND S9 "CONNECT"
  339. IF NOT FOUND GOTO Wait_Connect
  340. GOSU AutoBaud
  341. PAUS 3
  342. RFLU
  343. SET RECH ON
  344. SET RDIS ON
  345. PAUS 1
  346. S9="^M^JThe Flying Scotsman greets you!! ^M^J"
  347. S8="BBS-Welc"
  348. GOSU Disp_Fil
  349. N10=0
  350. ID_Query:
  351. MESS "^M^JID prompt: "
  352. TRAN "^M^JEnter your ID (or enter GUEST): "
  353. GOSU Read_Com
  354. IF FLAG(0) GOTO Exit
  355. IF NULL S9
  356. INC N10
  357. IF GE N10 3 GOTO Logon_Fail
  358. GOTO ID_Query
  359. ENDI
  360. SWIT S9
  361. CASE "GUEST"
  362. GOSU Register
  363. GOTO Exit
  364. ENDC
  365. ENDS
  366. S1=S9(0:7)
  367. UPPE S1
  368. Password:
  369. TRAN "^M^JEnter your password: "
  370. SET RECH OFF
  371. SET RDIS OFF
  372. GOSU Read_Com
  373. SET RECH ON
  374. IF FLAG(0) GOTO Exit
  375. SET RDIS ON
  376. IF NULL S9
  377. INC N10
  378. IF GE N10 3 GOTO Logon_Fail
  379. GOTO Password
  380. ENDI
  381. S1(8:79)=S9(0:7)
  382. GOSU Logon
  383. IF NOT FLAG(0)
  384. S9="Logon: "*S1(0:7)
  385. GOSU Log_Item
  386. SET FLAG(2) OFF
  387. S1=S1(0:7)
  388. CLOG "* BBS logon: "*S1
  389. TRAN "^M^J"
  390. GOTO Main_Pro
  391. ENDI
  392. Logon_Fa:
  393. TRAN "Unrecognized ID/Password^M^J"
  394. INC N10
  395. IF GE N10 3
  396. TRAN "You have exceeded the number of tries allowed for logon^M^JBye...^M^J"
  397. MESS "^M^JLogon attempts failed^M^J"
  398. S9="Failed logon"
  399. GOSU Log_Item
  400. GOTO Exit
  401. ENDI
  402. GOTO ID_Query
  403. Main_Pro:
  404. MESS "^M^JMain prompt: "
  405. GOSU Display_
  406. IF NOT FLAG(1)
  407. S9="^M^JC)omment, B)ulletins, M)ail, F)iles, A)larm or E)xit: "
  408. S8="BBS-NpMn"
  409. ELSE
  410. S9="^M^JP)rivileged, C)omment, B)ulletins, M)ail, F)iles, A)larm or E)xit: "
  411. S8="BBS-PrMn"
  412. ENDI
  413. GOSU Disp_Fil
  414. GOSU Read_Com
  415. IF FLAG(0) GOTO Exit
  416. LJ S9
  417. S9=S9(0:0)
  418. SWIT S9
  419. CASE "A"
  420. GOTO Alarm
  421. ENDC
  422. CASE "M"
  423. GOTO Mail_Com
  424. ENDC
  425. CASE "F"
  426. GOTO File_Com
  427. ENDC
  428. CASE "C"
  429. GOTO Comment
  430. ENDC
  431. CASE "B"
  432. GOTO Bull_Com
  433. ENDC
  434. CASE "E"
  435. GOTO Logoff
  436. ENDC
  437. CASE "P"
  438. IF FLAG(1) GOTO Priv_Prompt
  439. ENDC
  440. ENDS
  441. TRAN "^M^JCommand not recognized... try again^M^J"
  442. GOTO Main_Pro
  443. Logoff:
  444. CHDI S22
  445. TRAN "^M^JOK... Bye^M^J"
  446. S9="Logoff: "*S1(0:7)
  447. CLOG S9
  448. GOSU Log_Item
  449. Exit:
  450. S9="* BBS cycled"
  451. CLOG S9
  452. GOSU Log_Item
  453. MESS "^G"
  454. GOTO Restart
  455. Alarm:
  456. SOUN 440 500
  457. SOUN 493 100
  458. SOUN 554 100
  459. SOUN 587 100
  460. SOUN 659 100
  461. SOUN 739 100
  462. SOUN 830 100
  463. SOUN 880 500
  464. GOTO Main_Pro
  465. Priv_Pro:
  466. MESS "^M^JPrivilege prompt: "
  467. GOSU Display_
  468. S9="^M^JL)ist, P)ath, S)ubdir, D)OS, M)ain or E)xit: "
  469. S8="BBS-PPMn"
  470. GOSU Disp_Fil
  471. GOSU Read_Com
  472. IF FLAG(0) GOTO Exit
  473. LJ S9
  474. S9=S9(0:0)
  475. SWIT S9
  476. CASE "L"
  477. GOTO DIR
  478. ENDC
  479. CASE "S"
  480. GOTO CHDIR
  481. ENDC
  482. CASE "P"
  483. GOTO PATHLIST
  484. ENDC
  485. CASE "D"
  486. GOTO Shell
  487. ENDC
  488. CASE "M"
  489. GOTO Main_Pro
  490. ENDC
  491. CASE "E"
  492. GOTO Logoff
  493. ENDC
  494. ENDS
  495. TRAN "^M^JCommand not recognized... try again^M^J"
  496. GOTO Priv_Pro
  497. CHDIR:
  498. MESS "^M^JCHDIR Command: "
  499. TRAN "^M^JEnter the drive:subdirectory: "
  500. GOSU Read_Com
  501. IF FLAG(0) GOTO Exit
  502. IF NOT NULL S9
  503. CHDI S9
  504. SET FLAG(2) ON
  505. ENDI
  506. GOTO Priv_Pro
  507. PATHLIST:
  508. MESS "